package testes;
import static org.junit.Assert.*;

import java.util.Date;
import java.util.Vector;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import projeto.Cliente;
import projeto.DevolverFilmes;
import projeto.Filme;
import projeto.Gerente;
import projeto.Locacao;
import projeto.Locadora;
import projeto.LocarFilmes;


public class TomarEmprestadoTest {

	Locadora locadoralanna;
	Cliente cl1, cl2;
	Vector<Cliente> clientes =  new Vector();
	Locacao lc1, lc2;
	Filme fl1, fl2, fl3;
	LocarFilmes lf;
	Gerente gerente;
	@Before
	public void prepararTesteIniciarDevolucao(){
		locadoralanna = new Locadora();
		
		cl1 = new Cliente("c1","123","Maylon");
		cl2= new Cliente("c2","456","Aline");
		
		fl1 = new Filme(0, "Titanic", "Navio Afunda");
		fl2 = new Filme(1, "Conan", "Bruto");
		fl3 = new Filme(2, "Diario da Princesa", "Um saco");
		
		clientes.add(cl1);
		clientes.add(cl2);
		
		locadoralanna.setClientes(clientes);
		
		gerente = new Gerente();
		locadoralanna.setGerente(gerente);
		
		lf = new LocarFilmes(locadoralanna);
	}
		
		
	@Test
	public void testTomarEmprestado() {
		lf.iniciarOperacao("c1");
		Assert.assertEquals("c1", lf.getCliente().getCartaoAVS());
		
		Assert.assertEquals(7.0, lf.tomarEmprestado(fl1),0);
		Assert.assertEquals(7.0, fl1.getLocacao().getValorTotal(),0);
		Assert.assertEquals(fl1, lf.getCliente().buscarLocacoes(0));
		
		Assert.assertEquals(14.0, lf.tomarEmprestado(fl2),0);
		Assert.assertEquals(fl2, lf.getCliente().buscarLocacoes(1));
		Assert.assertEquals(fl2, lf.getCliente().buscarLocacoes(1));
		
		Assert.assertEquals(21.0, lf.tomarEmprestado(fl3),0);
		Assert.assertEquals(fl3, lf.getCliente().buscarLocacoes(2));
		Assert.assertEquals(fl3, lf.getCliente().buscarLocacoes(2));
	}
	
	@Test
	public void testTomarEmprestadoUmFilmeJaEmprestadoClientesDistintos() {
		lf.iniciarOperacao("c1");
		Assert.assertEquals("c1", lf.getCliente().getCartaoAVS());
		
		Assert.assertEquals(7.0, lf.tomarEmprestado(fl1),0);
		Assert.assertEquals(7.0, fl1.getLocacao().getValorTotal(),0);
		Assert.assertEquals(fl1, lf.getCliente().buscarLocacoes(0));
		
		Assert.assertEquals(14.0, lf.tomarEmprestado(fl2),0);
		Assert.assertEquals(fl2, lf.getCliente().buscarLocacoes(1));
		Assert.assertEquals(fl2, lf.getCliente().buscarLocacoes(1));
		
		Assert.assertEquals(21.0, lf.tomarEmprestado(fl3),0);
		Assert.assertEquals(fl3, lf.getCliente().buscarLocacoes(2));
		Assert.assertEquals(fl3, lf.getCliente().buscarLocacoes(2));
		
		lf.iniciarOperacao("c2");
		Assert.assertEquals("c2", lf.getCliente().getCartaoAVS());
		Assert.assertEquals(0.0, lf.tomarEmprestado(fl1),0);
		Assert.assertEquals(null, lf.getCliente().buscarLocacoes(0));
	}
	
	@Test
	public void testTomarEmprestadoUmFilmeJaEmprestadoMesmosClientes() {
		lf.iniciarOperacao("c1");
		Assert.assertEquals("c1", lf.getCliente().getCartaoAVS());
		Assert.assertEquals(7.0, lf.tomarEmprestado(fl1),0);
		Assert.assertEquals(fl1, lf.getCliente().buscarLocacoes(0));
		
		
		Assert.assertEquals("c1", lf.getCliente().getCartaoAVS());
		Assert.assertEquals(7.0, lf.tomarEmprestado(fl1),0);
	}
	


}
